#ifndef WIDGET_H_
#define WIDGET_H_

#include <QWidget>
#include <QPushButton>
#include <QLabel>
#include <QLineEdit>
#include <QTextEdit>
#include <QPlainTextEdit>
#include <QComboBox>
#include <QFontComboBox>
#include <QSpinBox>
#include <QTimeEdit>
#include <QDateEdit>
#include <QScrollBar>
#include <QRadioButton>
#include <QCheckBox>
#include <QListView>
#include <QStringListModel>
#include <QTreeView>
#include <QStandardItemModel>
#include <QTableView>
#include "newdialog.h"

namespace Ui {
class Widget;
}

class Widget : public QWidget
{
    Q_OBJECT

public:
    //初始化相关操作
    void init();
    //初始化事件绑定
    void initEvent();
    explicit Widget(QWidget *parent = nullptr);
     ~Widget() override;

public Q_SLOTS:
     //显示一个新窗口
    void showNewWidget();
    //关闭新窗口
    void closeNewWidget();
    //获取选择的字体
    void getFont(const QFont& f);
    //单选按钮改变
    void radioChanged();
    //复选框改变
    void checkChange();
protected:
    //鼠标按下 (复写父类方法)
    void mousePressEvent(QMouseEvent* e)override;
    //鼠标移动(复写父类方法)
    void mouseMoveEvent(QMouseEvent* e)override;
    //鼠标释放(复写父类方法)
    void mouseReleaseEvent(QMouseEvent* e)override;

private:
    Ui::Widget *ui;
    QString str;
    QPoint last; //最后一次鼠标位置（全屏坐标）
    QWidget * newWidget             = nullptr;//子窗口
    QIcon * icon                    = nullptr;//图标
    QPushButton * closeBtn          = nullptr;//关闭按钮
    QPushButton * newWinBtn         = nullptr;//打开一个窗口
    QPushButton * closeWinBtn       = nullptr;//关闭子窗口按钮
    QLabel * label                  = nullptr; //label标签
    QLineEdit * lineEdit            = nullptr;//单行文本
    QTextEdit * textEdit            = nullptr;//多行文本
    QPlainTextEdit * plainTextEdit  = nullptr;//纯多行文本编辑器
    QComboBox  * comboBox           = nullptr;//下拉列表框
    QFontComboBox * fontComBox      = nullptr;//字体下拉框
    QSpinBox * spinBox              = nullptr;//范围选择
    QTimeEdit * timeEdit            = nullptr;//时间控件
    QDateEdit * dateEdit            = nullptr;//日期控件
    QScrollBar * scrollBar          = nullptr;//滚动条
    QRadioButton * radioBtn1        = nullptr;//单选按钮1
    QRadioButton * radioBtn2        = nullptr;//单选按钮2
    QCheckBox *checkBox01           = nullptr;//复选框01
    QCheckBox *checkBox02           = nullptr;//复选框02
    QCheckBox *checkBox03           = nullptr;//复选框03
    QListView *listView             = nullptr;//ListView
    QStringListModel *model         = nullptr;//数据模型
    QTreeView *treeView             = nullptr;//TreeView
    QStandardItemModel * itemModel  = nullptr;//模型
    QTableView *tableView           = nullptr;//表格
    QStandardItemModel * tableModel = nullptr;//数据模型




};

#endif // WIDGET_H
